39#ifdef PREINIT_SUPPORTED
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
73#define ENOCEAN5_PKT_SYNC_BYTE 0x55
79#define ENOCEAN5_PKT_TYPE_RADIO_ERP1 0x01
80#define ENOCEAN5_PKT_TYPE_RESPONSE 0x02
81#define ENOCEAN5_PKT_TYPE_EVENT 0x04
82#define ENOCEAN5_PKT_TYPE_COMMON_CMD 0x05
83#define ENOCEAN5_PKT_TYPE_REMOTE_MAN_CMD 0x07
84#define ENOCEAN5_PKT_TYPE_RADIO_MESSAGE 0x09
85#define ENOCEAN5_PKT_TYPE_RADIO_ERP2 0x0A
91#define ENOCEAN5_CMD_WR_SLEEP 0x01
92#define ENOCEAN5_CMD_WR_RESET 0x02
93#define ENOCEAN5_CMD_RD_VERSION 0x03
94#define ENOCEAN5_CMD_WR_IDBASE 0x07
95#define ENOCEAN5_CMD_RD_IDBASE 0x08
96#define ENOCEAN5_CMD_WR_REPEATER 0x09
97#define ENOCEAN5_CMD_RD_REPEATER 0x0A
98#define ENOCEAN5_CMD_WR_FILTER_ADD 0x0B
99#define ENOCEAN5_CMD_WR_FILTER_DEL 0x0C
100#define ENOCEAN5_CMD_WR_FILTER_DEL_ALL 0x0D
101#define ENOCEAN5_CMD_WR_FILTER_ENABLE 0x0E
102#define ENOCEAN5_CMD_RD_FILTER 0x0F
103#define ENOCEAN5_CMD_WR_WAIT_MATURITY 0x10
104#define ENOCEAN5_CMD_WR_LEARNMODE 0x17
105#define ENOCEAN5_CMD_RD_LEARNMODE 0x18
106#define ENOCEAN5_CMD_WR_SECDEV_DEL 0x1A
107#define ENOCEAN5_CMD_WR_MODE 0x1C
108#define ENOCEAN5_CMD_RD_SECDEV_COUNT 0x1D
109#define ENOCEAN5_CMD_RD_SECDEV_BY_ID 0x1E
110#define ENOCEAN5_CMD_WR_SECDEV_SENDTECHIN 0x20
111#define ENOCEAN5_CMD_RD_DUTYCYCLE_LIMIT 0x23
112#define ENOCEAN5_CMD_SET_BAUDRATE 0x24
113#define ENOCEAN5_CMD_GET_FREQUENCY_INFO 0x25
114#define ENOCEAN5_CMD_WR_STARTUP_DELAY 0x2F
115#define ENOCEAN5_CMD_SET_CRC_SIZE 0x34
116#define ENOCEAN5_CMD_GET_CRC_SIZE 0x35
117#define ENOCEAN5_CMD_WR_RLC_SAVE_PERIOD 0x36
118#define ENOCEAN5_CMD_WR_RLC_LEGACY_MODE 0x37
119#define ENOCEAN5_CMD_WR_SECDEV2_ADD 0x38
120#define ENOCEAN5_CMD_WR_RSSITESTMODE 0x3A
121#define ENOCEAN5_CMD_RD_RSSITESTMODE 0x3B
122#define ENOCEAN5_CMD_WR_SECDEV_MAINKEY 0x3C
123#define ENOCEAN5_CMD_RD_SECDEV_MAINKEY 0x3D
124#define ENOCEAN5_CMD_WR_TRANSPARENT_MODE 0x3E
125#define ENOCEAN5_CMD_RD_TRANSPARENT_MODE 0x3F
126#define ENOCEAN5_CMD_WR_TX_ONLY_MODE 0x40
127#define ENOCEAN5_CMD_RD_TX_ONLY_MODE 0x41
133#define ENOCEAN5_RET_OK 0x00
134#define ENOCEAN5_RET_ERROR 0x01
135#define ENOCEAN5_RET_NOT_SUPPORTED 0x02
136#define ENOCEAN5_RET_WRONG_PARAM 0x03
137#define ENOCEAN5_RET_OPERATION_DENIED 0x04
138#define ENOCEAN5_RET_LOCK_SET 0x05
139#define ENOCEAN5_RET_BUFFER_TOO_SMALL 0x06
140#define ENOCEAN5_RET_NO_FREE_BUFFER 0x07
146#define ENOCEAN5_EVT_READY 0x04
147#define ENOCEAN5_EVT_SECUREDEVICES 0x05
148#define ENOCEAN5_EVT_DUTYCYCLE_LIMIT 0x06
149#define ENOCEAN5_EVT_TX_DONE 0x08
150#define ENOCEAN5_EVT_LRN_MODE_DISABLED 0x09
156#define ENOCEAN5_FILTER_TYPE_SOURCE_ID 0x00
157#define ENOCEAN5_FILTER_TYPE_RORG 0x01
158#define ENOCEAN5_FILTER_TYPE_RSSI 0x02
159#define ENOCEAN5_FILTER_TYPE_DESTINATION_ID 0x03
160#define ENOCEAN5_FILTER_ACTION_FW_FALSE 0x00
161#define ENOCEAN5_FILTER_ACTION_FW_TRUE 0x80
162#define ENOCEAN5_FILTER_ACTION_REP_FALSE 0x40
163#define ENOCEAN5_FILTER_ACTION_REP_TRUE 0xC0
169#define ENOCEAN5_WAKEUP_VOLTAGE_DROP 0x00
170#define ENOCEAN5_WAKEUP_HW_RESET 0x01
171#define ENOCEAN5_WAKEUP_WATCHDOG 0x02
172#define ENOCEAN5_WAKEUP_FLYWHEEL 0x03
173#define ENOCEAN5_WAKEUP_PARITY_ERROR 0x04
174#define ENOCEAN5_WAKEUP_MEMORY_ERROR 0x05
175#define ENOCEAN5_WAKEUP_INVALID_MEM_ADDR 0x06
176#define ENOCEAN5_WAKEUP_HW_WAKEUP_PIN0 0x07
177#define ENOCEAN5_WAKEUP_HW_WAKEUP_PIN1 0x08
178#define ENOCEAN5_WAKEUP_UNKNOWN_RESET 0x09
179#define ENOCEAN5_WAKEUP_UART 0x0A
180#define ENOCEAN5_WAKEUP_SW_RESET 0x0B
186#define ENOCEAN5_ERP1_SEC_LVL_NOT_PROC 0x00
187#define ENOCEAN5_ERP1_SEC_LVL_OBSOLETE 0x01
188#define ENOCEAN5_ERP1_SEC_LVL_DECR 0x02
189#define ENOCEAN5_ERP1_SEC_LVL_AUTH 0x03
190#define ENOCEAN5_ERP1_SEC_LVL_DECR_AUTH 0x04
196#define ENOCEAN5_RORG_RPS 0xF6
197#define ENOCEAN5_RORG_1BS 0xD5
198#define ENOCEAN5_RORG_4BS 0xA5
199#define ENOCEAN5_RORG_VLD 0xD2
200#define ENOCEAN5_RORG_MSC 0xD1
201#define ENOCEAN5_RORG_ADT 0xA6
202#define ENOCEAN5_RORG_SM_LRN_REQ 0xC6
203#define ENOCEAN5_RORG_SM_LRN_ANS 0xC7
204#define ENOCEAN5_RORG_SM_REC 0xA7
205#define ENOCEAN5_RORG_SYS_EX 0xC5
206#define ENOCEAN5_RORG_SEC 0x30
207#define ENOCEAN5_RORG_SEC_ENCAPS 0x31
208#define ENOCEAN5_RORG_SEC_MAN 0x34
209#define ENOCEAN5_RORG_SIGNAL 0xD0
210#define ENOCEAN5_RORG_UTE 0xD4
216#define ENOCEAN5_BROADCAST_ID ( 0xFFFFFFFFul )
217#define ENOCEAN5_TX_ID ( 0x00000000ul )
223#define ENOCEAN5_RSP_TIMEOUT_1000MS 1000
224#define ENOCEAN5_WAIT_TIME_1S 1
225#define ENOCEAN5_WAIT_TIME_5S 5
226#define ENOCEAN5_WAIT_TIME_60S 60
233#define ENOCEAN5_TX_DRV_BUFFER_SIZE 300
234#define ENOCEAN5_RX_DRV_BUFFER_SIZE 300
235#define ENOCEAN5_PAYLOAD_BUFFER_SIZE 256
236#define ENOCEAN5_PAYLOAD_OPT_BUFFER_SIZE 10
254#define ENOCEAN5_MAP_MIKROBUS( cfg, mikrobus ) \
255 cfg.tx_pin = MIKROBUS( mikrobus, MIKROBUS_TX ); \
256 cfg.rx_pin = MIKROBUS( mikrobus, MIKROBUS_RX ); \
257 cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST );
enocean5_return_value_t
EnOcean 5 Click return value data.
Definition enocean5.h:339
@ ENOCEAN5_OK
Definition enocean5.h:340
@ ENOCEAN5_ERROR
Definition enocean5.h:341
#define ENOCEAN5_PAYLOAD_OPT_BUFFER_SIZE
Definition enocean5.h:236
#define ENOCEAN5_PAYLOAD_BUFFER_SIZE
Definition enocean5.h:235
#define ENOCEAN5_TX_DRV_BUFFER_SIZE
EnOcean 5 driver buffer size.
Definition enocean5.h:233
#define ENOCEAN5_RX_DRV_BUFFER_SIZE
Definition enocean5.h:234
err_t enocean5_generic_read(enocean5_t *ctx, uint8_t *data_out, uint16_t len)
EnOcean 5 data reading function.
err_t enocean5_wait_packet(enocean5_t *ctx, uint8_t type, uint8_t cmd, uint8_t max_time_s)
EnOcean 5 wait packet function.
void enocean5_cfg_setup(enocean5_cfg_t *cfg)
EnOcean 5 configuration object setup function.
void enocean5_set_rst_pin(enocean5_t *ctx, uint8_t state)
EnOcean 5 set RST pin function.
err_t enocean5_init(enocean5_t *ctx, enocean5_cfg_t *cfg)
EnOcean 5 initialization function.
err_t enocean5_send_radio_message(enocean5_t *ctx, uint8_t rorg, uint8_t *data_in, uint8_t data_len)
EnOcean 5 send radio message function.
err_t enocean5_generic_write(enocean5_t *ctx, uint8_t *data_in, uint16_t len)
EnOcean 5 data writing function.
void enocean5_clear_buffers(enocean5_t *ctx)
EnOcean 5 clear buffers function.
err_t enocean5_send_packet(enocean5_t *ctx)
EnOcean 5 send packet function.
err_t enocean5_read_info(enocean5_t *ctx)
EnOcean 5 read info function.
err_t enocean5_read_packet(enocean5_t *ctx)
EnOcean 5 read packet function.
err_t enocean5_reset_device(enocean5_t *ctx)
EnOcean 5 reset device function.
EnOcean 5 Click configuration object.
Definition enocean5.h:317
uint32_t baud_rate
Definition enocean5.h:326
bool uart_blocking
Definition enocean5.h:327
uart_data_bits_t data_bit
Definition enocean5.h:328
pin_name_t tx_pin
Definition enocean5.h:320
pin_name_t rx_pin
Definition enocean5.h:319
uart_stop_bits_t stop_bit
Definition enocean5.h:330
uart_parity_t parity_bit
Definition enocean5.h:329
pin_name_t rst
Definition enocean5.h:323
EnOcean 5 Click device version object.
Definition enocean5.h:281
uint8_t app_desc[16]
Definition enocean5.h:283
uint32_t device_ver
Definition enocean5.h:286
uint8_t api_ver[4]
Definition enocean5.h:284
uint32_t device_id
Definition enocean5.h:285
uint8_t app_ver[4]
Definition enocean5.h:282
EnOcean 5 Click ESP3 packet structure object.
Definition enocean5.h:267
uint16_t pl_len
Definition enocean5.h:268
uint8_t type
Definition enocean5.h:270
uint8_t payload_opt[ENOCEAN5_PAYLOAD_OPT_BUFFER_SIZE]
Definition enocean5.h:272
uint8_t pl_opt_len
Definition enocean5.h:269
uint8_t payload[ENOCEAN5_PAYLOAD_BUFFER_SIZE]
Definition enocean5.h:271
EnOcean 5 Click context object.
Definition enocean5.h:295
uint8_t uart_rx_buffer[ENOCEAN5_RX_DRV_BUFFER_SIZE]
Definition enocean5.h:303
enocean5_packet_t tx_pkt
Definition enocean5.h:306
uart_t uart
Definition enocean5.h:300
digital_out_t rst
Definition enocean5.h:297
uint8_t uart_tx_buffer[ENOCEAN5_TX_DRV_BUFFER_SIZE]
Definition enocean5.h:304
enocean5_info_t info
Definition enocean5.h:308
enocean5_packet_t rx_pkt
Definition enocean5.h:307